#include "otutil.h"
static char *opt_remote;
+static gboolean opt_commit_only;
static gboolean opt_disable_fsync;
static gboolean opt_untrusted;
static gboolean opt_bareuseronly_files;
*/
static GOptionEntry options[] = {
+ { "commit-metadata-only", 0, 0, G_OPTION_ARG_NONE, &opt_commit_only, "Fetch only the commit metadata", NULL },
{ "remote", 0, 0, G_OPTION_ARG_STRING, &opt_remote, "Add REMOTE to refspec", "REMOTE" },
{ "disable-fsync", 0, 0, G_OPTION_ARG_NONE, &opt_disable_fsync, "Do not invoke fsync()", NULL },
{ "untrusted", 0, 0, G_OPTION_ARG_NONE, &opt_untrusted, "Verify checksums of local sources (always enabled for HTTP pulls)", NULL },
pullflags |= OSTREE_REPO_PULL_FLAGS_UNTRUSTED;
if (opt_bareuseronly_files)
pullflags |= OSTREE_REPO_PULL_FLAGS_BAREUSERONLY_FILES;
+ if (opt_commit_only)
+ pullflags |= OSTREE_REPO_PULL_FLAGS_COMMIT_ONLY;
if (opt_disable_fsync)
ostree_repo_set_disable_fsync (repo, TRUE);
set -euo pipefail
-echo "1..$((85 + ${extra_basic_tests:-0}))"
+echo "1..$((86 + ${extra_basic_tests:-0}))"
CHECKOUT_U_ARG=""
CHECKOUT_H_ARGS="-H"
if ! skip_one_without_user_xattrs; then
cd ${test_tmpdir}
- mkdir repo3
+ mkdir repo4
+ ostree_repo_init repo4 --mode=bare-user
+ ${CMD_PREFIX} ostree --repo=repo4 pull-local --commit-metadata-only repo test2
+ csum1=$($OSTREE rev-parse test2)
+ csum2=$(${CMD_PREFIX} ostree --repo=repo4 rev-parse test2)
+ assert_streq "${csum1}" "${csum2}"
+ test -f repo4/state/$csum1.commitpartial
+ echo "ok pull-local --commit-metadata-only"
+ rm -rf repo4
+fi
+
+if ! skip_one_without_user_xattrs; then
+ cd ${test_tmpdir}
ostree_repo_init repo3 --mode=bare-user
${CMD_PREFIX} ostree --repo=repo3 pull-local --remote=aremote repo test2
${CMD_PREFIX} ostree --repo=repo3 rev-parse aremote/test2